package cn.tedu.oop2;
/*本类用作静态static的入门案例*/
/*0.被static修饰的资源统称为静态资源
 * 静态资源是随着类加载而加载到内存中的,比对象优先进入内存
 * 所以,静态资源可以不通过对象,直接通过类名调用*/
public class TestStatic1 {
    public static void main(String[] args) {
        final int MIN_VaLuE = 1;
        //6.通过类名直接调用静态资源 (对象没有创建,就可以调用静态资源)
        /*Fruit.clean();
        System.out.println(Fruit.kind);
        System.out.println(Fruit.weight);*/
        //4.创建水果类的对象
        Fruit f1 = new Fruit();
        Fruit f2 = new Fruit();
        //5.使用水果类的所有资源
        /*f1.grow();//不静态,可以使用对象直接点出来
        f1.clean();
        System.out.println(f1.kind); //通过类名.资源,相比类的属性和方法,节省内存,,
        System.out.println(f1.weight);*/

        //7.修改普通属性的值
        /*3.静态资源在内存中只有一份,而且会被全局所有对象共享
         * 所以:不管我们使用哪种方式修改了静态变量的值(两种方式都可以修改,但是建议使用类名修改静态资源变量),使用任何方式来查看
         * 都是静态变量那个刚刚被修改了的值*/
        //f1.price = 6.6;
//        f1.price = 6.6;
        f1.price = 6.6;
        System.out.println(f2.price);
        f2.price = 7.7;
        //System.out.println(Fruit.price);//Non-static field 'price' cannot be referenced from a static context
        /*System.out.println(f1.price);//6.6
        System.out.println(f2.price);//0.0*/
        System.out.println(f1.price);
        System.out.println(f2.price);

        //Fruit.kind = "苹果";
        //Fruit.kind = "苹果";
//        Fruit.kind = "苹果";
        Fruit.kind = "苹果";
//        System.out.println(Fruit.kind);
//        System.out.println(Fruit.kind);
        System.out.println(Fruit.kind);
//        System.out.println(f1.kind);
//        System.out.println(f1.kind);
        System.out.println(f1.kind);
//        System.out.println(f2.kind);
//        System.out.println(f2.kind);
        System.out.println(f2.kind);

        //f1.kind = "猕猴桃";
//       f1.kind = "猕猴";
//        f1.kind = "猕猴桃";
        f1.kind ="猕猴桃";
        System.out.println(f1.kind);
        System.out.println(Fruit.kind);
//        System.out.println(f1.kind);
        System.out.println(f2.kind);

//       f2.kind = "香蕉";
//       f2.kind = "香蕉";
        f2.kind ="banana";
        System.out.println(Fruit.kind);
        System.out.println(f1.kind);
        System.out.println(f2.kind);
    }
}
//1.创建水果类
class Fruit{

    //final int uE = 1; //常量不一定是大写的字母
    //2.定义属性
    /*1.static可以用来修饰成员变量吗?--可以!*/
    static String kind;//品种
    static double weight;//重量
    double price;//价格

    //3.定义方法
    /*2.static可以用来修饰方法吗?--可以!*/
    public static void clean(){
        System.out.println("洗水果呀洗水果~");
    }
    public void grow(){
        System.out.println("这个果子长的一看就很好吃~");
    }
}